package rohyunji.swing.outline;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

public class J22_JTable extends JFrame {

    public J22_JTable() {
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setBounds(250, 250, 450, 350);
       setLayout(new BorderLayout());
       setTitle("JTable 맛배기");

       //스크롤 영역 생성(반드시 필요)
       JScrollPane scroll = new JScrollPane();
       scroll.setPreferredSize(new Dimension(400,300));
       getContentPane().add(scroll);
       //JTable에  표시할 데이터들과 제목을 정의하기 위해 DefaultTableModel클래스 생성
       //DefaultTableModel model = new DefaultTableModel();
       //수정불가 TableModel작성 (내부클래스)
       DefaultTableModel model = new DefaultTableModel(){
       @Override
    public boolean isCellEditable(int row, int column) {
	return false;
    } //열 수정 불가
    };
    //제목작성
    String title[] = {"제목1","제목2","제목3","제목4","제목5"};
    model.setColumnIdentifiers(title);
    //본문작성
    //model.addRow(new String[] {"11","22","33","44","55"});
    //model.addRow(new String[] {"11","22","33","44","55"});
    //model.addRow(new String[] {"11","22","33","44","55"});
    //model.addRow(new String[] {"11","22","33","44","55"});
    //model.addRow(new String[] {"11","22","33","44","55"});
    for(int i=1; i<=50; ++i){
	model.addRow(new String[] {i+1+"",i+2+"",i+3+"",i+4+"",i+5+""});
    }
 // JTable 생성
    JTable table = new JTable();
    table.setModel(model);
    //테이블의 셀 내용을 가운데로 정렬
    //테이블 셀의 세부속성을 상세히 제어하려면
    //DefaultTableCellRenderer 클래스를 사용
    //정렬, 크기조절, 그림삽입, 다양한 컴퍼넌트 삽입등의 
    //고급효과는  DefaultTableRenderer 없이는 처리 불가
    DefaultTableCellRenderer cell = new DefaultTableCellRenderer();
	cell.setHorizontalAlignment(JLabel.CENTER); //가운데 정렬
    table.getColumnModel().getColumn(0).setCellRenderer(cell);
    table.getColumnModel().getColumn(2).setCellRenderer(cell);
    table.getColumnModel().getColumn(3).setCellRenderer(cell);
    table.getColumnModel().getColumn(4).setCellRenderer(cell);
    //JTable에 마우스 더블클릭 이벤트 추가
    table.addMouseListener(new MouseAdapter(){
	public void mouseClicked(MouseEvent e){
		if(e.getClickCount()==2){ //더블클릭하면
			JTable table =(JTable)e.getSource();
					int row = table.getSelectedRow();//선택행
			        int col = table.getSelectedColumn();//선택열
                 String val = (String)table.getValueAt(row, col);//값출력
                 String msg = row + "/" + col + "/" + val;
			 JOptionPane.showMessageDialog(null,msg);
		}
	}
    });
    // 스크롤페인의 뷰 영역에 Jtable 추가
    scroll.setViewportView(table);
    // 화면에 표시
    setVisible(true);
 }
    public static void main(String arg[]) {
        EventQueue.invokeLater(new Runnable() {
           @Override
           public void run() {
              new J22_JTable();            
           }
        });
     }
  }  
